package 牛客周赛.牛客周赛Round87;

import java.util.Scanner;

/**
 * @Title: C
 * @Author 贾金博
 * @Package 牛客周赛.牛客周赛Round87
 * @Date 2025/4/7 下午4:53
 * @description: This is C
 */
public class C {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while(t -- > 0 ) {
            int n = sc.nextInt();
            long[] a = new long [n + 10];
            String s = "";
            for(int i = 0; i <= n - 1; i++) {
                a[i] = sc.nextInt();
            }
            s = sc.next();

            int ret = 0; // 表示的是 修改的次数
            // 先去看看有没有不满足条件的
            for(int i = 0; i < s.length(); i ++ ) {
                if(s.charAt(i) == '>') {
                    if(a[i] <= 0) { // 想要把这个错误的 也即是不满足条件的改为 满足条件的
                        ret ++ ;
                        a[i] = 1;
                    }
                } else if(s.charAt(i) == '<') {
                    if(a[i] >= 0) {
                        ret ++ ;
                        a[i] = -1; // 改为满足条件的
                    }
                }
            }

            // 现在开始统计 Z 这种情况
            for(int i = 0; i < s.length(); i++) {
                if(s.charAt(i) == 'Z' && a[i] * a[i - 1] <= 0) { // 这里可能会会发生溢出的操作
                    a[i] = a[i - 1]; // 这样是最安全的;
                    ret ++ ;
                }
            }
            System.out.println(ret);
        }
    }
}
